package com.xnj.file_byte_stream_demo;

import java.io.FileInputStream;
import java.io.IOException;

// 使用FileInputStream每次读取多个字节
public class FileInputStreamTest3 {

    public static void main(String[] args) throws IOException {

        // 创建一个字节输入流管道和源文件接通  文件内容为：abc66
        FileInputStream is = new FileInputStream("src/bb.txt");


        // 使用循环改进
        byte [] buffer = new byte[3];
        int len;
        while ((len = is.read(buffer))!= -1){
            // 每一次读多少取多少
            System.out.print(new String(buffer, 0, len));
        }

        /*
        但是该方式仍然无法解决读取汉字乱码问题，无法避免汉字编码被截断的问题
        但是适用于文件拷贝操作
         */

        /*
        解决汉字乱码的关键就是不截断汉字的编码，那就一次性读取整个文件
        字节输入流FileInputStream提供了读取全部字节的方法,如下
        public byte[] readAllBytes()
        但是如果文件太大，创建的字节数组太大，会报内存溢出异常
        读写文本更适合使用字符流
         */
//        byte[] bytes = is.readAllBytes();
//        System.out.println(new String(bytes));


        is.close();
    }
}
